#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;

//int main()
//{
//	int n, p;
//	cin >> n >> p;
//	vector<int> arr(n);
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//	}
//	sort(arr.begin(), arr.end());
//	int right = 0;
//	int left = 0;
//	int ret = 0;
//	while (right < n)
//	{
//		while (arr[right] - arr[left] > 2 * p)
//		{
//			left++;
//		}
//		ret = max(right - left + 1, ret);
//		right++;
//	}
//	cout << ret << endl;
//	return 0;
//}
//
//int main()
//{
//	int n, m;
//	cin >> n >> m;
//	int ret = 0;
//	for (int i = 0; i < m - 1; i++)
//	{
//		ret = ret * (n - 1) % 109;
//	}
//	cout << ret << endl;
//	return 0;
//}

//const int N = 1010;
//int dx[4] = { 0,0,1,-1 };
//int dy[4] = { 1,-1,0,0 };
//int dp[N][N];
//char arr[N][N];
//int x1, y1, x2, y2;
//int n, m;
//
//int bfs()
//{
//	if (arr[x1][y1] == '*' || arr[x2][y2] == '*')
//	{
//		return -1;
//	}
//	memset(dp, -1, sizeof(dp));
//	queue<pair<int, int>> q;
//	q.push({ x1,y1 });
//	dp[x1][y1] = 0;
//	while (q.size())
//	{
//		pair<int,int> p = q.front();
//		q.pop();
//		for (int i = 0; i < 4; i++)
//		{
//			int x = p.first + dx[i];
//			int y = p.second + dy[i];
//			if (x >= 1 && x <= n && y >= 1 && y <= m && dp[x][y] == -1 && arr[x][y] == '.')
//			{
//				q.push({ x,y });
//				dp[x][y] = dp[p.first][p.second] + 1;
//				if (x == x2 && y == y2)
//				{
//					return dp[x][y];
//				}
//			}
//		}
//	}
//	return -1;
//}
//
//int main()
//{
//	cin >> n >> m >> x1 >> y1 >> x2 >> y2;
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			cin >> arr[i][j];
//		}
//	}
//	cout << bfs() << endl;
//	return 0;
//}

class Solution {
public:
    struct Sort
    {
        bool operator()(vector<int> x1, vector<int> x2)
        {
            return x2[0] > x1[0];
        }
    };
    int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {
        // write code here
        sort(startEnd.begin(), startEnd.end(), Sort());
        vector<int> ret;
        for (int i = 0; i < n; i++)
        {
            if (ret.size() == 0)
            {
                ret.push_back(startEnd[i][1]);
                continue;
            }
            int k = 1;
            int p = ret.size();
            for (int j = 0; j < p; j++)
            {
                if (ret[j] <= startEnd[i][0])
                {
                    k = 0;
                    ret[j] = startEnd[i][1];
                    break;
                }
            }
            if (k)
            {
                ret.push_back(startEnd[i][1]);
                cout << 1 << endl;
            }
        }
        return ret.size();
    }
};